package singleton;

import java.io.Serializable;

/**
 * FileName: SerializableSingleton
 * Author:   周壮
 * Date:     2020/3/5 15:51
 * Description:
 */
//反序列化导致破坏单例模式 本来可以不加 implements Serializable ， 但是我就加了怎么办？
public class SerializableSingleton implements Serializable {

    // 序列化就是把内存中的状态通过转换成字节码的形式
    // 从而转换一个 I/O 流，写入其他地方（可以是磁盘、网络 I/O）
    // 内存中的状态会永久保存下来

    // 反序列化就是将已经持久化的字节码内容转换为 I/O 流
    // 通过 I/O 流的读取，进而将读取的内容转换为 Java 对象
    // 在转换过程中会重新创建对象 new

    public final static SerializableSingleton INSTANCE = new SerializableSingleton();

    private SerializableSingleton() {
    }

    public static SerializableSingleton getInstance() {
        return INSTANCE;
    }

    private Object readResolve() {
        return INSTANCE;
    }

}
